리액트와 JSX

Vanila Javascript를 이용한 Element 생성

<!DOCTYPE html>
<html lang="en">
  <body>
    <div id="root"></div>
    <script>
      const rootElement = document.getElementById("root");
      const element = document.createElement("h1");
      element.textContent = "Hello, world!";
      rootElement.appendChild(element);
    </script>
  </body>
</html>

React를 이용한 Element 생성

<!DOCTYPE html>
<html lang="en">
  <body>
    <script
      crossorigin
      src="https://unpkg.com/react@18/umd/react.development.js"
    ></script>
    <script
      crossorigin
      src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"
    ></script>
    <div id="root"></div>
    <script>
      const element = React.createElement("h1, { childeren: "Hello, world!"})
      // const element = React.createElement("h1, null, "Hello, world!")
      ReactDOM.render(element, rootElement)
    </script>
  </body>
</html>

JSX를 이용한 Element 생성

https://ko.reactjs.org/docs/introducing-jsx.html JSX란 const element = <h1>Hello, world!</h1> 과 같은 HTML 태그 처럼 쓸 수 있는 JavaScript 확장 문법 JSX를 쓰기 위해서는 Babel이라는 JavaScript 컴파일러가 필요

<!DOCTYPE html>
<html lang="en">
  <body>
    <script
      crossorigin
      src="https://unpkg.com/react@18/umd/react.development.js"
    ></script>
    <script
      crossorigin
      src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"
    ></script>
    <script
      crossorigin
      src="https://unpkg.com/@babel/standalone/babel.min.js"
    ></script>
    <div id="root"></div>
    <script type="text/babel">
      const rootElement = document.getElementById("root");
      const element = <h1 className="title">Hello, world!</h1>;
      ReactDOM.render(element, rootElement);
    </script>
  </body>
</html>
``` ## 템플릿 ```html
<!DOCTYPE html>
<html lang="en">
  <body>
    <div id="root"></div>
    <script
      crossorigin
      src="https://unpkg.com/react@18/umd/react.development.js"
    ></script>
    <script
      crossorigin
      src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"
    ></script>
    <script
      crossorigin
      src="https://unpkg.com/@babel/standalone/babel.min.js"
    ></script>

    <script type="text/babel">
      const rootElement = document.getElementById("root");

      const App = () => {
        return (
          <>
            <button onclick={handleClick}>search</button>
          </>
        );

        ReactDOM.render(<App />, rootElement);
      };
    </script>
  </body>
</html>
```